#pragma once
#include <stdlib.h>
#include<stdbool.h>
#include <sys/epoll.h>
#include <unistd.h>
#include<stdio.h>

typedef int(* handleFunc)(void* arg);


enum FDEvent
{
    Timeout = 0x01,
    ReadEvent = 0x02,
    WriteEvent = 0x04,
};
struct Channel
{
    int fd;
    int event;
    // 回调函数
    handleFunc readCallBack;
    handleFunc writeCallBack;
    handleFunc destoryCallBack;

// 这个参数用来小时传递参数
    void* arg;
};

//初始化一个Channel
struct Channel* ChannelInit(int fd, int event ,handleFunc readCallBack, handleFunc writeCallBack,handleFunc destoryCallBack,void* arg);
// 添加一个Channel
// 修改fd的读事件（检测或者不检测）
void updateWriteEvent(struct Channel* channel, bool flag);
// 修改fd的写事件（检测或者不检测）

// 写事件的检测
bool isWriteEventEnable(struct Channel* channel);
